import java.util.Arrays;
import java.util.LinkedList;

/*数组扩容
* 问题分析：将两个递增数组的m+n个元素，按照递增顺序排列
* 设想1：直接将其中一个数组插入到另一个数组中，然后进行排序
* 设想2：使用指针思想——如果num2[n]>num1[n]&&num2[n]<=num1[n+1]，将num2[n]插入num1的（n+1）下标位置
* 设想3：数组转链表 */
public class Solution {
    public static void merge1(int[] num1,int m,int[] num2,int n){
        //设想1
        for (int i = 0; i < n; i++) {
            num1[m+i] = num2[i];
        }
        Arrays.sort(num1);
        //排序
        System.out.println(Arrays.toString(num1));
    }

    //设想2
    public static void merge(int[] nums1, int m, int[] nums2, int n) {
        while(n>0&&m>0){
            if(nums1[m-1]>nums2[n-1]){
                nums1[n+m-1]=nums1[m-1];
                m--;
            }else{
                nums1[n+m-1]=nums2[n-1];
                n--;
            }
        }
        for(int i=0;i<n;i++){
            nums1[i]=nums2[i];
        }
    }
    public static void main(String[] args) {
        int[] nums1 = {4, 5, 6, 0, 0, 0};
        int[] nums2 = {1,2,3};
        int m = 3;int n = 3;
        Solution.merge(nums1,m,nums2,n);
    }
}
